SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE Procedure [dbo].[SP_TDMOVI_BANC_I03]        
/*-------------------------------------------------------*/        
/*---Empresa              : OFISIS S.A.                --*/        
/*---Cliente              : OFISIS                 --*/        
/*---Sistema              : Tesoreria                  --*/        
/*---Mödulo               : Empresa                    --*/        
/*---Programa             : Grabaciön Detalle          --*/        
/*---                       Movimiento Bancos          --*/        
/*---                       (Ingresos)                 --*/          
/*---Script               : tdbanc_p.sql              --*/        
/*---Nombre SP            : SP_TDMOVI_BANC_I03         --*/        
/*---Desarrollado por     : Javier Flores A.           --*/        
/*---Fecha Creaciön       : 18/06/1999                 --*/        
/*---Base Datos           : Microsoft Sql Server       --*/        
/*---Versiön              : 7.0                        --*/        
/*---Invoca a SP          :                            --*/        
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/        
/*---Modificado 1 por     : Eduardo Vivar Pomiano      --*/        
/*---Fecha Modificaciön   : 03/04/2001                 --*/         
/*---Detalle Modificaciön : Permite Grabar Correctamente Docs Prov. en Egreso Bancos--*/        
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/        
/*---Modificado 2 por     : Reynaldo Menacho           --*/        
/*---Fecha Modificaciön   : 22/04/2005                 --*/         
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/        
/*---      de los documentos             --*/       
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/    
/*---Modificado 3 por     : Carlos Marquez Escobar     --*/    
/*---Fecha Modificaciön   : 14/08/2007                 --*/    
/*---Detalle Modificaciön : T.C Directo FA_CAMB_EXTR   --*/    
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/        
/*---Comentarios                                       --*/        
/*---                                                  --*/        
/*---                                                  --*/        
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/        
/*--- Drop Proc SP_TDMOVI_BANC_I03                    --*/        
/*--- Grant Execute on SP_TDMOVI_BANC_I03 to public   --*/         
/*--- SP_TDMOVI_BANC_I03 '01','OFISIS','CON','011-0349-01-00010850','2008','08','00200009','','C','0000000002'
'FAC','0001-0000000047','SOL','08/01/2008','08/01/2008',142.8,142.8,100,'','N',100,'LET',2.98,'SOL',142.8,
'','','','','','','001',1                      --*/        
/*-------------------------------------------------------*/        
 @ISCO_EMPR       TD_VC_002,         
 @ISCO_USUA_MODI  TD_VC_008_USUA,        
 @ISCO_BANC       TD_VC_003,         
 @ISNU_CNTA_BANC  TD_VC_020,        
 @ISAA_BNCO       TD_VC_004,         
 @ISMM_BNCO       TD_VC_002,         
 @ISTI_MOVI_BANC  TD_VC_001,          
 @ISNU_COMP_BANC  TD_VC_008,         
 @INNU_SECU       TD_IN_001,        
 @ISTI_ENTI       TD_VC_001,        
 @ISCO_ENTI       TD_VC_020,        
 @ISTI_DOCU_ENTI  TD_VC_003,        
 @ISNU_DOCU_ENTI  TD_VC_020,        
 @ISCO_MONE_DOCU  TD_VC_003,        
 @IDFE_DOCU       TD_DT_001,        
 @IDFE_VENC       TD_DT_001,        
 @INIM_DOCU       TD_NU_016_004,        
 @INIM_SALD_DOCU  TD_NU_016_004,        
 @INIM_DETA       TD_NU_016_004,        
 @ISDE_OBSE       TD_VC_100,        
 @ISST_CIER_DOCU  TD_VC_001_SINO,        
 @INIM_DETA_NEGA  TD_NU_016_004,        
 @ISTI_DOCU       TD_VC_003,        
 @INFA_TIPO_CAMB  TD_NU_015_006,        
 @ISCO_MONE       TD_VC_003,        
 @INIM_SALD_CONV  TD_NU_016_004,        
 @ISNU_RECI_COBR  TD_VC_010,        
 @IDFE_RECI_COBR  TD_DT_001,        
 @ISCO_LIQU       TD_VC_020,        
 @ISTI_MOVI_OPER  TD_VC_001,        
 @ISCO_CNTA_EMPR  TD_VC_020,        
 @ISCO_ORDE_SERV  TD_VC_020,  
 @ISCO_UNID_CNTB  TD_VC_003,  
 @INFA_CAMB_EXTR TD_NU_015_006  
  
 As  
Declare         @VNNU_SECU TD_IN_001, @VNIM_TOTA TD_NU_016_004,        
    @VNIM_CONV_ANTE TD_NU_016_004,   @VNNU_REGI TD_IN_001,    @VSST_SIGN TD_VC_001,        
    @VNIM_TOTA_CLIE TD_NU_016_004, @VNIM_TOTA_PROV  TD_NU_016_004, @VNIM_CONV_DOCU TD_NU_016_004,        
    @VSCO_MONE_NACI TD_VC_003, @VSCO_MONE_EXTR TD_VC_003,        
    @VSCO_ESTA_LETR   TD_VC_003, @VNIM_TOTA_DIST TD_NU_016_004, @VSTI_CAMB TD_VC_001,        
    @VSTI_ORIG TD_VC_001, @VDFE_OPER TD_DT_001, @VSCO_ESTA_ORIG TD_VC_003,   
 @VSCO_UNID_CONC TD_VC_003, @VSCO_MONE_MOVI TD_VC_003, @VNFA_CAMB_EXTR TD_NU_015_006  
        
 Begin Tran SP_TDMOVI_BANC_I03        
        
 SELECT @VSCO_MONE_NACI = CO_MONE_DEFA,        
 @VSCO_MONE_EXTR = CO_MONE_EXTR        
 FROM TMPARA_TESO        
 WHERE CO_EMPR = @ISCO_EMPR        
   
   
 If @ISCO_MONE_DOCU != @ISCO_MONE        
 Begin        
  Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG        
  From TTFACA_OPCI        
  Where CO_EMPR = @ISCO_EMPR        
  And CO_MODU = 'TEEM0001'        
  And CO_MENU = 'FTEEMAJ'        
   
   
  If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )        
   Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG        
   From TMPARA_TESO        
   Where CO_EMPR = @ISCO_EMPR        
    
  Select @VDFE_OPER = FE_OPER,            
  @VSCO_UNID_CONC = CO_UNID_CONC,  
  @VNFA_CAMB_EXTR = FA_CAMB_EXTR  
  From   TCMOVI_BANC        
  Where  CO_EMPR = @ISCO_EMPR         
  and    CO_UNID_CONC = @ISCO_UNID_CNTB  
  and    CO_BANC = @ISCO_BANC         
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC          
  and    AA_BNCO = @ISAA_BNCO        
  and    MM_BNCO = @ISMM_BNCO         
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
  and    NU_COMP_BANC = @ISNU_COMP_BANC         
   
  Select @VSCO_MONE_MOVI = CO_MONE  
  From TMCNTA_BANC  
  Where  CO_EMPR = @ISCO_EMPR             
  and    CO_BANC = @ISCO_BANC             
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC              
   
   
   
  If @ISCO_MONE_DOCU != @VSCO_MONE_NACI And @ISCO_MONE_DOCU != @VSCO_MONE_EXTR     
   Select @VNIM_CONV_DOCU = Round(dbo.FN_TCFACT_CAMB_Q04(@ISCO_MONE, @ISCO_MONE_DOCU,                 
   @INIM_DETA, @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @VDFE_OPER, @INFA_TIPO_CAMB, @INFA_CAMB_EXTR), 2)    
    
  Else If @VSCO_MONE_MOVI != @VSCO_MONE_NACI And @VSCO_MONE_MOVI != @VSCO_MONE_EXTR    
   Select @VNIM_CONV_DOCU = Round(dbo.FN_TCFACT_CAMB_Q03(@ISCO_MONE, @ISCO_MONE_DOCU,                 
   @INIM_DETA, @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB, @VNFA_CAMB_EXTR), 2)    
    
  Else    
   Select @VNIM_CONV_DOCU = Round(dbo.FN_TCFACT_CAMB_Q03(@ISCO_MONE, @ISCO_MONE_DOCU,                 
   @INIM_DETA, @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB, @INFA_CAMB_EXTR), 2)    
   
 End        
 Else        
  Select @VNIM_CONV_DOCU = @INIM_DETA                
   
   
 If Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
  -- Se busca el estado actual del documento      
  Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ORIG    
output      
   
 If @INNU_SECU IS NULL        
 Begin        
  Select @VNNU_SECU   = NU_SECU        
  From   TDMOVI_BANC        
  Where  CO_EMPR = @ISCO_EMPR        
  and    CO_UNID_CONC = @ISCO_UNID_CNTB  
  and    CO_BANC = @ISCO_BANC        
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC        
  and    AA_BNCO = @ISAA_BNCO        
  and    MM_BNCO = @ISMM_BNCO         
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
  and    NU_COMP_BANC = @ISNU_COMP_BANC        
   
  If @VNNU_SECU > 0        
   Select @VNNU_SECU = @VNNU_SECU + 1        
  Else        
   Select @VNNU_SECU = 1           
   
  Insert Into TDMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC,        
  NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_DOCU, FE_VENC,        
  IM_DOCU, IM_SALD_DOCU, IM_DETA, IM_CONV_DOCU, DE_OBSE,        
  ST_CIER_DOCU, IM_DETA_NEGA, IM_SALD_CONV, NU_RECI_COBR, FE_RECI_COBR, CO_LIQU, TI_MOVI_OPER,       
  CO_CNTA_EMPR, CO_ORDE_SERV, FA_CAMB_EXTR, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,    
CO_UNID_CONC)  
  Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC,        
  @ISNU_COMP_BANC, @VNNU_SECU, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @ISCO_MONE_DOCU,    
@IDFE_DOCU, @IDFE_VENC, @INIM_DOCU,        
  @INIM_SALD_DOCU, @INIM_DETA, @VNIM_CONV_DOCU, @ISDE_OBSE, @ISST_CIER_DOCU, @INIM_DETA_NEGA, @INIM_SALD_CONV,     
      
  @ISNU_RECI_COBR, @IDFE_RECI_COBR, @ISCO_LIQU, @ISTI_MOVI_OPER,         
  @ISCO_CNTA_EMPR, @ISCO_ORDE_SERV, @INFA_CAMB_EXTR, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),    
@ISCO_UNID_CNTB)  
   
  If @@error <> 0        
  Begin        
   Rollback Tran SP_TDMOVI_BANC_I03        
   Return        
  End            
   
  If @ISST_CIER_DOCU = 'S'And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
  Begin      
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos      
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,       
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU      
     
   If @@error <> 0        
   Begin        
    Rollback Tran SP_TDMOVI_BANC_I03       
    Return        
   End            
  End      
  Else      
   If @ISST_CIER_DOCU = 'N'And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
   Begin      
    --Se cancela el documento y se graba en tabla de kardex de estados de documentos      
    Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, 
    @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU      
      
    If @@error <> 0        
    Begin        
     Rollback Tran SP_TDMOVI_BANC_I03       
     Return        
    End            
   End       
 End        
 Else         
 Begin        
  Select @VNIM_CONV_ANTE = Isnull(IM_CONV_DOCU,0)        
  From  TDMOVI_BANC         
  Where CO_EMPR = @ISCO_EMPR        
  And   CO_UNID_CONC = @ISCO_UNID_CNTB  
  And   CO_BANC = @ISCO_BANC        
  And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
  And   AA_BNCO = @ISAA_BNCO        
  And   MM_BNCO = @ISMM_BNCO        
  And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
  And   NU_COMP_BANC = @ISNU_COMP_BANC        
  And   NU_SECU = @INNU_SECU         
   
  IF RTRIM(ISNULL(@ISCO_CNTA_EMPR, '')) = ''      
   Update TDMOVI_BANC         
   Set   IM_DETA = @INIM_DETA,        
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                      
   DE_OBSE = @ISDE_OBSE,        
   ST_CIER_DOCU = @ISST_CIER_DOCU,        
   IM_DETA_NEGA = @INIM_DETA_NEGA,        
   FE_USUA_MODI = getdate(),        
   CO_USUA_MODI = @ISCO_USUA_MODI        
   Where CO_EMPR = @ISCO_EMPR        
   And   CO_UNID_CONC = @ISCO_UNID_CNTB  
   And   CO_BANC = @ISCO_BANC        
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
   And   AA_BNCO = @ISAA_BNCO        
   And   MM_BNCO = @ISMM_BNCO        
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
   And   NU_COMP_BANC = @ISNU_COMP_BANC        
   And   NU_SECU = @INNU_SECU        
  Else      
   Update TDMOVI_BANC         
   Set TI_MOVI_OPER = @ISTI_MOVI_OPER,      
   CO_CNTA_EMPR = @ISCO_CNTA_EMPR,      
   TI_ENTI = @ISTI_ENTI,      
   CO_ENTI = @ISCO_ENTI,      
   CO_ORDE_SERV = @ISCO_ORDE_SERV,      
   IM_DETA = @INIM_DETA,      
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                    
   DE_OBSE = @ISDE_OBSE,      
   ST_CIER_DOCU = @ISST_CIER_DOCU,      
   IM_DETA_NEGA = @INIM_DETA_NEGA,      
   FE_USUA_MODI = getdate(),      
   CO_USUA_MODI = @ISCO_USUA_MODI        
   Where CO_EMPR = @ISCO_EMPR        
   And   CO_UNID_CONC = @ISCO_UNID_CNTB  
   And   CO_BANC = @ISCO_BANC        
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
   And   AA_BNCO = @ISAA_BNCO        
   And   MM_BNCO = @ISMM_BNCO        
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
   And   NU_COMP_BANC = @ISNU_COMP_BANC        
   And   NU_SECU = @INNU_SECU        
   
  If @@error <> 0        
  Begin        
   Rollback Tran SP_TDMOVI_BANC_I03        
   Return        
  End            
   
  Select @VNIM_CONV_DOCU = @VNIM_CONV_DOCU - @VNIM_CONV_ANTE      
   
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
  -- - Round(@VNIM_CONV_ANTE,2) + Round(@VNIM_CONV_DOCU,2)      
  Begin      
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos      
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,       
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU    
    
   If @@error <> 0        
   Begin        
    Rollback Tran SP_TDMOVI_BANC_I03       
    Return        
   End            
  End      
  Else       
   If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
   Begin      
    --Se cancela el documento y se graba en tabla de kardex de estados de documentos      
    Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,    
      
    @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU      
      
    If @@error <> 0        
    Begin        
     Rollback Tran SP_TDMOVI_BANC_I03       
     Return        
    End            
   End      
   
 End        
   
   
 -- Sumo todos los documentos de clientes --  
   
 Select @VNIM_TOTA_CLIE = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)        
 From  TDMOVI_BANC        
 Where CO_EMPR = @ISCO_EMPR        
 And   CO_UNID_CONC = @ISCO_UNID_CNTB     
 And   CO_BANC = @ISCO_BANC        
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
 And   AA_BNCO = @ISAA_BNCO        
 And   MM_BNCO = @ISMM_BNCO        
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
 And   NU_COMP_BANC = @ISNU_COMP_BANC        
 And   TI_ENTI = 'C'        
   
 -- Sumo todos los documentos de proveedores --  
   
 Select @VNIM_TOTA_PROV = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)        
 From  TDMOVI_BANC        
 Where CO_EMPR = @ISCO_EMPR        
 And   CO_UNID_CONC = @ISCO_UNID_CNTB  
 And   CO_BANC = @ISCO_BANC        
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
 And   AA_BNCO = @ISAA_BNCO        
 And   MM_BNCO = @ISMM_BNCO        
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
 And   NU_COMP_BANC = @ISNU_COMP_BANC        
 And   TI_ENTI = 'P'        
   
 Select  @VNIM_TOTA_DIST = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)         
 From    TDMOVI_BANC        
 Where CO_EMPR = @ISCO_EMPR        
 And CO_UNID_CONC = @ISCO_UNID_CNTB   
 And CO_BANC = @ISCO_BANC        
 And NU_CNTA_BANC = @ISNU_CNTA_BANC        
 And AA_BNCO = @ISAA_BNCO        
 And MM_BNCO = @ISMM_BNCO        
 And TI_MOVI_BANC = @ISTI_MOVI_BANC        
 And NU_COMP_BANC = @ISNU_COMP_BANC        
 And TI_ENTI != 'P'        
 And TI_ENTI != 'C'        
   
 Select  @VNIM_TOTA = isnull(@VNIM_TOTA_CLIE,0) + ISNULL(@VNIM_TOTA_PROV,0) + ISNULL(@VNIM_TOTA_DIST,0)        
   
 Update TCMOVI_BANC        
 Set IM_MOVI = Round(@VNIM_TOTA,2),        
 CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                 
 Where CO_EMPR = @ISCO_EMPR         
 And   CO_UNID_CONC = @ISCO_UNID_CNTB  
 And   CO_BANC = @ISCO_BANC         
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC         
 And   AA_BNCO = @ISAA_BNCO        
 And   MM_BNCO = @ISMM_BNCO         
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC         
 And   NU_COMP_BANC = @ISNU_COMP_BANC         
   
 If @@error <> 0        
 Begin        
  Rollback Tran SP_TDMOVI_BANC_I03        
  Return        
 End          
  
        
commit Tran SP_TDMOVI_BANC_I03        
        
/*------------------------ Fin ------------------------------*/


GO
